package com.efast.cafe.portal.dao.api;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import com.efast.cafe.portal.bean.api.PortalApiProjectBean;
import com.efast.cafe.portal.entity.api.PortalApiSystem;

/**
 * <p>
 * 接口
 * </p>
 * <p>
 * Table: portal_api_pro_sys_def - 项目系统关系定义
 * </p>
 *
 * @since ${.now}
 */

public interface PortalApiProSysDefDao {

	/**
	 * 新增项目系统之间的关系
	 * 
	 * @Date : 2017年8月10日
	 * @param portalApiProSysDef
	 */
	public void insertApiProSysDef(@Param("projectId")Integer projectId, @Param("systemId")Integer systemId, @Param("isDefault")Integer isDefault, @Param("createUser")String createUser);

	/**
	 * 删除项目下的系统
	 * 
	 * @param projectId
	 * @param systemId
	 * @param user
	 */
	public void deleteApiProSysDef(@Param("systemId")Integer systemId, @Param("user")String user);

	/**
	 * 判断该Project是否存在有效的system
	 * 
	 * @Date : 2017年8月10日
	 * @param projectId
	 * @return
	 */
	public int sysCountByProId(@Param("projectId")Integer projectId);

	/**
	 * 批量新增项目系统之间的关系
	 * 
	 * @Date : 2017年8月14日
	 * @param systemList
	 * @return
	 */
	public int publishApiProSysDef(@Param(value = "projectId") Integer projectId,
			@Param(value = "systemIds") List<Integer> systemIds, @Param(value = "createUser") String createUser,
			@Param(value = "isDefault") Integer isDefault);

	/**
	 * 通过projectId查询所有的system，构建项目系统关系表信息
	 * 
	 * @Date : 2017年8月15日
	 * @param projectId
	 * @param createUser
	 * @return
	 */
	public int upgradeApiProSysDef(@Param(value = "newProjectId")Integer newProjectId, @Param(value = "oldProjectId")Integer oldProjectId, @Param(value = "createUser")String createUser);

	/**
	 * 系统升级导致项目升级时，复制项目的系统关系,指定排除的系统
	 * 
	 * @param newProjectId
	 * @param oldProjectId
	 * @param systemId
	 * @param createUser
	 * @return void
	 * @Author Administrator
	 * @Date 2017年8月24日
	 */
	public void copyApiProSysDefExceptSystemId(@Param("newProjectId") Integer newProjectId,
			@Param("oldProjectId") Integer oldProjectId, @Param("systemId") Integer systemId,
			@Param("user") String createUser);

	/**
	 * 批量清除项目系统默认关系
	 * 
	 * @param projectId
	 * @param systemId
	 * @param user
	 * @param void
	 * @Author Administrator
	 * @Date 2017年8月27日
	 */
	public void cleanApiProSysDefaultDef(@Param("projectId") Integer projectId,
			@Param(value = "systemIds") List<Integer> systemIds, @Param("user") String user);

	/**
	 * 批量清除项目系统默认关系
	 * 
	 * @param projectId
	 * @param systemId
	 * @param user
	 * @param void
	 * @Author Administrator
	 * @Date 2017年8月27日
	 */
	public void updateApiProSysDefaultDef(@Param("projectId") Integer projectId,
			@Param(value = "systemId") Integer systemId, @Param(value = "isDefault") Integer isDefault,
			@Param("user") String user);
}